package com.kukudexin;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: 酷酷的鑫
 * @Date: 2021/12/8 18:08
 * @description:
 */
public class Test20 {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add( 123 );
        list.add( 456 );

        //可以把具有泛型信息的对象赋值一个没有泛型信息的变量, 会丢失list对象中的泛型信息,这就是泛型擦除
        List  list2 = list;         //list2实际引用是的存储Integer对象的集合
        System.out.println( list2);     //[123, 456]
        //再把list2赋值给一个有泛型信息的strList集合 ,
        List<String> strList = list2;

        // list2和strList是同一个运行时类,相同类型的变量可以相互赋值
        System.out.println( list2.getClass());      //class java.util.ArrayList
        System.out.println( strList.getClass());    //class java.util.ArrayList

        //注意: strList集合中的类型参数与list集合中类型参数不同
        System.out.println( strList );  //[123, 456]
        //当试图取出strList集合中的元素时, 系统会尝试把Integer对象转换为String字符串对象,引发类型转换异常
        System.out.println( strList.get(0) );
    }
}
